#ifndef COMPRESORDETERMINOS_H_
#define COMPRESORDETERMINOS_H_
#include "TerminoSimplificado.h"
#include <string>
#include "FrontCoding.h"
#include "TablaIndice.h"
#include "CompresorDePunteros.h"
#define N_FRONTCODING 4
#define LEXICO_SIZE 3000
#define BUFFER 42000000

class CompresorDeTerminos {
public:
	CompresorDeTerminos(const std::string &path_salida_lexico, const std::string
			&path_salida_punteros, const std::string &path_tabla);
	virtual ~CompresorDeTerminos();
	void comprimir(const std::string &path_entrada,  const std::string &path_info);
	void descomprimir();
private:
	void comprimir_termino(char* termino, int longitud, char* termino_anterior,
			int longitud_anterior);
	void comprimir_punteros(int nro_doc, Doc_frec* par[]);
	std::string path_lexico;
	FILE* lexico;
	int pos_lexico;
	int pos_lexico_offset;
	char* buffer_lexico;

	std::string path_punteros;
	FILE* punteros;
	char* buffer_punteros;
	int pos_punteros;
	int pos_punteros_offset;

	std::string path_tabla;
	TablaIndice tabla;
	FrontCoding frontcoding;
	CompresorDePunteros compresorPunteros;
};

#endif /* COMPRESORDETERMINOS_H_ */
